package cn.tedu.csmall.passport.mapper;

import cn.tedu.csmall.passport.pojo.entity.Admin;
import cn.tedu.csmall.passport.pojo.vo.AdminListItemVO;
import cn.tedu.csmall.passport.pojo.vo.AdminLoginInfoVO;
import cn.tedu.csmall.passport.pojo.vo.AdminStandardVO;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 处理管理员数据的Mapper接口
 */
@Repository
public interface AdminMapper {

    /**
     * 添加管理员
     * @param admin 管理员对象
     * @return      受影响的行数
     */
    int insert (Admin admin);

    /**
     * 批量添加管理员
     * @param list
     * @return
     */
    int insertBatch(List<Admin> list);

    /**
     * 根据id删除管理员
     * @param id
     * @return
     */
    int deleteById (Long id);

    /**
     * 根据id数组批量删除管理员
     * @param ids
     * @return
     */
    int deleteByIds (Long[] ids);

    /**
     * 修改管理员信息
     * @param admin
     * @return
     */
    int update(Admin admin);

    /**
     * 统计管理员列表数量
     * @return
     */
    int count();

    /**
     * 统计用户名出现的次数
     * @param username
     * @return
     */
    int countByUsername(String username);

    /**
     * 统计手机号出现的次数
     * @param phone
     * @return
     */
    int countByPhone(String phone);

    /**
     * 统计邮箱出现的次数
     * @param email
     * @return
     */
    int countByEmail(String email);

    /**
     * 查询管理员列表
     * @return
     */
    List<AdminListItemVO> list();

    /**
     * 根据id查询管理员的标准信息
     * @param id
     * @return
     */
    AdminStandardVO getStandardById(Long id);

    /**
     * 查询用户登录的相关信息
     */
    AdminLoginInfoVO getAdminInfoByUsername(String username);

}
